#ifndef LINKLIST_H_
#define LINKLIST_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "base.h"
#include "node.h"

typedef struct _tagLinkList {
    int		length;
    PNode	head;
} LinkList, *PLinkList;

Status LinkListInit( PLinkList L );
Status LinkListUnInit( PLinkList L );

Status LinkListInsertElem( PLinkList L, int pos, ElemType elem );
Status LinkListDeleteElem( PLinkList L, int pos, ElemType *pElem );

Status LinkListReset( PLinkList L );
Status LinkListCreate( PLinkList L, ElemType *pVec, int length );

Status LinkListGetElem( PLinkList L, int pos, ElemType *pElem );

Status LinkListPrint( PLinkList L );

static PNode LinkListGetPriorElem( PLinkList L, int pos );

#ifdef __cplusplus
}
#endif

#endif